#include "init_gpio.h"

const gpio_num_t lcd_blk_num = GPIO_NUM_10;

// 配置时自动设置
const gpio_num_t lcd_sclk_num = GPIO_NUM_4;
const gpio_num_t lcd_mosi_num = GPIO_NUM_5;
const gpio_num_t lcd_miso_num = GPIO_NUM_NC;
const gpio_num_t lcd_rst_num = GPIO_NUM_6;
const gpio_num_t lcd_dc_num = GPIO_NUM_7;
const gpio_num_t lcd_cs_num = GPIO_NUM_8;

// zw相关引脚
const gpio_num_t zw_ctrl_num = GPIO_NUM_18;
const gpio_num_t zw_touch_num = GPIO_NUM_2;

// 串口引脚
const gpio_num_t uart_rx_num = GPIO_NUM_1;
const gpio_num_t uart_tx_num = GPIO_NUM_0;

const gpio_num_t door_num = GPIO_NUM_19;

void gpio_init(void)
{
    // lcd电源控制
    gpio_config_t gpio_cfg = {
        .mode = GPIO_MODE_OUTPUT,
        .pin_bit_mask = 1ULL << lcd_blk_num};
    ESP_ERROR_CHECK(gpio_config(&gpio_cfg));

    // zw101电源控制
    gpio_cfg.mode = GPIO_MODE_OUTPUT;
    gpio_cfg.pin_bit_mask = 1ULL << zw_ctrl_num;
    gpio_cfg.pull_up_en = GPIO_PULLUP_DISABLE;
    gpio_cfg.pull_down_en = GPIO_PULLDOWN_DISABLE;
    gpio_cfg.intr_type = GPIO_INTR_DISABLE;
    ESP_ERROR_CHECK(gpio_config(&gpio_cfg));

    // zw101触摸控制
    gpio_cfg.mode = GPIO_MODE_INPUT;
    gpio_cfg.pin_bit_mask = 1ULL << zw_touch_num;
    gpio_cfg.pull_up_en = GPIO_PULLUP_DISABLE;
    gpio_cfg.pull_down_en = GPIO_PULLDOWN_DISABLE;
    gpio_cfg.intr_type = GPIO_INTR_DISABLE;
    ESP_ERROR_CHECK(gpio_config(&gpio_cfg));

    // 锁的开关引脚
    gpio_cfg.mode = GPIO_MODE_OUTPUT;
    gpio_cfg.pin_bit_mask = 1ULL << door_num;
    gpio_cfg.pull_up_en = GPIO_PULLUP_DISABLE;
    gpio_cfg.pull_down_en = GPIO_PULLDOWN_DISABLE;
    gpio_cfg.intr_type = GPIO_INTR_DISABLE;
    ESP_ERROR_CHECK(gpio_config(&gpio_cfg));
    gpio_set_level(door_num, 1);
}
